"""
O módulo utils_agenda contém as principais funções para realizar
as principais ações que envolvam a estrutura da agenda
"""

import pickle


def salvar_agenda(agenda, arquivo):
    """
    A função 'salvar_agenda' armazena os dados da Agenda em um arquivo binário.
    A biblioteca 'pickle' é utilizada para serializar o objeto 'agenda', utilizando o método 'dump'
    """
    #Abre o arquivo com 'wb' para escrever dados binários no arquivo.
    try:
        with open(arquivo, 'wb') as file_object:
            pickle.dump(agenda, file_object)
    except FileNotFoundError:
        print("\nErro ao salvar na agenda.\n")
    except pickle.PickleError:
        print("\nErro ao salvar na agenda.\nOcorreu problemas na biblioteca.\n")

def carregar_agenda(arquivo):
    """
    A função 'carregar_agenda' é responsável por desserializar os dados salvos no arquivo binário.
    A biblioteca 'pickle' é utilizada novamente, dessa vez com o método .load para fazer a desserialização
    """

    try:
        #Abre o arquivo especificado com 'rb' modo de leitura binária
        with open(arquivo, 'rb') as file_object:
            agenda = pickle.load(file_object)
    except FileNotFoundError:
        #Em caso de erro um dicionário vázio é armazenado na  variável 'agenda'
        agenda = {}
    except pickle.PickleError:
        print("\nErro ao carregar na agenda.\n")
    return agenda 

